Quản lý bộ nhớ thủ công thông qua new và delete tạo ra một "hợp đồng trách nhiệm". Nhà phát triển phải dự đoán chính xác mọi luồng thực thi—bao gồm các lệnh trả về sớm và ngoại lệ—để đảm bảo tài nguyên được giải phóng. Cách tiếp cận này dễ dẫn đến những lỗi hệ thống.
Những lỗi hệ thống
- Bẫy rò rỉ (Leakage Trap): Trong các cấu trúc logic phức tạp (if-else, switch), việc không ghép mỗi
newvớideletesẽ làm suy giảm hiệu suất hệ thống theo thời gian. - Sự vô hiệu hóa con trỏ: Lỗi như Con trỏ treo (Dangling Pointers) (truy cập bộ nhớ sau khi đã xóa) hoặc Giải phóng kép (Double Frees) gây ra hành vi không xác định và các lỗ hổng bảo mật.
- An toàn với ngoại lệ: Nếu một ngoại lệ xảy ra giữa quá trình cấp phát và giải phóng, thì
deletesẽ bị bỏ qua hoàn toàn.
Sự Phát triển
C++11/14 đã cải tiến header <memory> để hướng tới các mô hình sở hữu tự động, thay vì dùng các con trỏ trần, giúp đảm bảo an toàn ngay tại mức biên dịch viên.
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>